1. Field of the Invention
The present invention is a plug-in module hose framework which a client application utilizes to access the functionality of a plug-in module. Particularly, the hose framework provides a simple API to a client application, communicates with a plug-in module via a native and often complex plug-in API and can easily be updated to communicate via new version of the native plug-in API without altering the simple API which the host framework provides to the client application.
2. Description of the Related Art
Many existing software applications support "plug-in" modules and are therefore referred to as client applications to such plug-in modules. These plug-in modules provide the client applications with new or extended services. Plug-ins may, for example, provide specially tailored image filtering functionality to client applications. Adobe Systems, Inc..TM. currently offers several client applications which support plug-in modules. One such client application is Photoshop.TM., a popular image processing application. Due to the popularity of Photoshop, many software companies develop Photoshop-compatible plug-in modules. Because of the abundance of Photoshop-compatible plug-in modules, other image processing client applications must support these modules in order to effectively compete with Photoshop in the marketplace. Accordingly, many prominent image processing applications, such as Corel PHOTO-PAINT.TM., currently support Photoshop-compatible plug-in modules.
Client applications communicate with plug-in modules through complicated plug-in API's. In the case of Photoshop, the Photoshop native plug-in API is defined by Adobe developers. Accordingly, developers of Photoshop-compatible plug-ins design their plug-ins so as to conform to the Photoshop native plug-in API.
Plug-in API's have become more complex as the functionality provided to client applications through plug-in modules has become more sophisticated. For example, the Photoshop plug-in API is both complex and evolving. This API requires a client image processing application to make numerous complex function calls to a plug-in module and to execute many complex algorithms in order to retrieve, manage and invoke the plug-in module. In addition, these image processing applications must be updated to comply with changes in the Photoshop plug-in API. Moreover, these applications must provide backward-compatibility so as to support plug-in modules written to previous Photoshop plug-in API's.
Due to the foregoing, it is extremely difficult for a client application to establish and maintain compatibility with a plug-in API such as the Photoshop plug-in API. Even if compatibility can be achieved through continual updating of the client application, the cost of updating and rereleasing the client application is often too great to be economically practicable.
Therefore, there is a need for a system which provides a simple API to a client Application through which the client application may access plug-in modules conforming to later-developed plug-in API's.